A Simple Laser Range Finder
by Tom Thornton
This article appeared in the June 1999 issue of The Robot Builder.
Background
One traditional method of range finding is based on triangulation. To use triangulation, you must know the baseline distance between the light source and the sensor, as well as the angles the sensor and source make with the baseline between them. Figure 1 shows one possible configuration for a triangulation range finder.
Figure 1 - Triangulation Configuration
Point P1 is the laser source, P2 the sensor, and C the baseline between them. P3 represents the target of interest. The length of the segment B (the range) can be found from measuring distance C between the source and the sensor, and the angles a and b that the source and detector make with the baseline, using the Law of Sines:
This works well on geometry homework assignments, but turns out to be devilishly difficult in the real world because of the trouble involved in measuring the baseline and the angles a and b accurately and repeatably.
A Different Approach
In systems engineering it is often profitable to replace hardware with software. It turns out that this particular application is one of those instances. Examination of Figure 2 and formula (5) reveals that there is a linear relationship between the distance to an object and the position of its projection on the image plane when illuminated by a spot (such as produced by a laser). We can use this observation to great advantage in simplifying the mechanics of a laser range finder.
Mount a CCD camera and a laser so that the beam from the laser passes through the optical axis of the camera (see Figure 2). I am using a Tyco kids camera that I got at Toys R Us for about $50. A better choice would be any of the Connectix Quick Cams because you wouldn’t need a separate frame grabber. I got a pocket laser pointer at Harbor Freight for less than $10.
The placement of the laser with respect to the camera is completely irrelevant so long as their relationship is fixed. There is only one caveat, to detect small objects at various ranges, the laser and camera have to be relatively close together. I use a red plastic filter to minimize response to light other that the laser spot.
It is worth while to arrange things so that the laser beam crosses the optical axis approximately in the middle of the ranges of interest, i.e., if we want to measure distances from 2 to ten feet, the laser beam should cross the optical axis at about 6 feet from the image plane.
To calibrate the laser ranger, simply place a target at known distance x1 and measure the point u1 on the
image plane. Then place a target at known distance x2 and measure u2 on the image plane. Referring to Figure 2 we define the following:
From the triangulation calculations shown previously in formula (1) and some algebraic manipulations it can be shown that for a target at arbitrary distance x:
N
x = ------------ (5)
ud-k
where u is the position of the image of x on the image plane relative to the optical axis, and N, k, and d are defined as above.
To use the simple laser ranger, we locate the spot “u” on the image plane and calculate the range x directly from formula (5), simple and fast, even on a “low power” processor.
If our application needed real speed we could pre-compute a set of possible values for x in the range of interest, store those values in a look-up table and address the table by the value of u. The resolution would be limited by the amount of memory available for the table.
Summary
We have used software to overcome a nasty mechanical situation: that of repeatability of angular measurements; and in the process have produced a simple solution to range finding for small, and perhaps not-so-small, robots.
References
Blackburn, M. R. and H. G. Nguyen. “Robotic Sensor-Motor Transformations”, 1994.
Everett, H. R. “Sensors for Mobile Robots: Theory and Application”, 1995.
LeBouthillier, A. E. “Structured Light Vision” The Robot Builder, 1998.